<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //es6 symbol() 基本数据类型，独一无二，返回唯一的值
        //创建symbol
        let s1 = Symbol();
        console.log(s1,typeof s1)
        //使用Symbol.for()创建共享的Symbol,有全局缓存的特点。如果已经定义过，就会返回原来的值
        let s2 =Symbol.for('尚硅谷')
        let s2_2 = Symbol.for('hahah')
        console.log(s2 === s2_2)
        // console.log(s2_2)
        // console.log(s2)
        var s3 = Symbol('zhangshan')
        var s3 = Symbol('zhangshan')
        console.log(s3 === s3)
//  let users = {
//   张三: { age: 18, sex: '男' },
//   张三: { age: 20, sex: '女' },
// }
// console.log(users)//重名，打印最后一个
let name1 = Symbol('zhangsan')
let name2 = Symbol('zhangsan')
let users = {
    [name1] :{ age: 18, sex: '男' },
    [name2] : {age :20 ,sex :'女'},
}
console.log(users)
console.log(users[name2])
      
// let users = {
//   [name1]: { age: 18, sex: '男' },
//   [name2]: { age: 20, sex: '女' },
// }

let obj = {
    a :1,
    b: 2,
    [Symbol('c')]:3,
    [Symbol('d')] :4,
}
for(var k in obj){
    console.log(k)
}
// console.log(Object.getOwnPropertyNames(obj))
console.log(Object.getOwnPropertySymbols(obj))
let name = Object.getOwnPropertyNames(obj)
let sym = Object.getOwnPropertySymbols(obj)

//consr 特点常量块级作用域，必须要赋予初始值，且后期不能修改。
// const haha = 345
// haha = 456
// console.log(haha)  //不能修改初始值

const user = {age:18,sex:'nv'}
user.age = 20;
console.log(user) //可以修改属性或方法
// if(true){
//     const TYPE = 2;
//     console.log(TYPE)
// }
// console.log(TYPE)


// if(user){
//   const TYPE = 2;
//   console.log(TYPE)
// }
//     console.log(TYPE)

// let cat = {age:18,sex:'nv'};
// cat = 234  //let 可以修改初始值，不能删，如果不用可以赋值为null
// console.log(cat)
    </script>
</body>
</html>